package paquetes.manager;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
import java.util.*;

import paquetes.interfazRemota.AdmSucursalesController;
import paquetes.negocioVO.*;

public class AdministradorSucursal {
	private AdmSucursalesController admSucursales;
	private static AdministradorSucursal instancia;

	public static AdministradorSucursal getInstancia() {
		if (instancia == null)
			instancia = new AdministradorSucursal();
		return instancia;
	}

	private AdministradorSucursal() {
		try {
			 /*
			 System.setProperty("java.security.policy","C:/Users/Emiliano/Desktop/TP/Paquetes_Cliente/src/java.policy");
				
			System.setProperty("java.rmi.server.codebase","file:C:/Users/Emiliano/Desktop/TP/Paquetes_Repositorio/src/paquetes/");
				
			  System.setSecurityManager(new RMISecurityManager()); 
			  if (System.getSecurityManager() == null)
			  System.setSecurityManager(new RMISecurityManager());
			 */
			System.setProperty("java.security.policy","C:/Users/Emiliano/Desktop/TP/Paquetes_Cliente/src/java.policy");
			System.setProperty("java.rmi.server.hostname","127.0.0.1");
			System.setProperty("java.rmi.server.codebase","file:C:/Users/Emiliano/Desktop/TP/Paquetes_Repositorio/src/paquetes/");
			

			admSucursales = (AdmSucursalesController) Naming.lookup("//localhost/TPO_Paquetes_Sucursales");
			System.out.println("Adm de sucursales remoto adquirido");

		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (NotBoundException e) {
			e.printStackTrace();
		}
	}

	public List<SucursalVO> listarSucursales() {
		try {
			return admSucursales.listarSucursales();
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}

	public List<SucursalVO> obtenerSucursales(PedidoVO p) {
		try {
			return admSucursales.listarSucursales();
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}

	public SucursalVO obtenerSucursal(int id) {
		try {
			return admSucursales.obtenerSucursal(id);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;

	}

	public void alta(String nombre, String direccion, float latitud,
			float longitud) {
		try {
			admSucursales.crearSucursal(nombre, direccion, latitud, longitud);

		} catch (RemoteException e) {
			e.printStackTrace();
		}

	}

	public void baja(int id) {
		try {
			admSucursales.bajaSucursal(id);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
	}

	public void altaEmpleado(String nombre, String apellido, int posicion,
			int activo, int suc) {
		try {
			admSucursales
					.crearEmpleado(nombre, apellido, posicion, activo, suc);

		} catch (RemoteException e) {
			e.printStackTrace();
		}

	}

	public void altaHojaDeRuta(HojaDeRutaVO hoja, int sucorigen, int sucdestino) {
		try {
			admSucursales.crearHojaDeRuta(hoja, sucorigen, sucdestino);

		} catch (RemoteException e) {
			e.printStackTrace();
		}

	}

	public List<EmpleadoVO> listarEmpleados(int idSuc) {
		try {
			return admSucursales.listarEmpleados(idSuc);

		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}

	public EmpleadoVO obtenerEmpleado(int id) {
		try {
			return admSucursales.obtenerEmpleado(id);

		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}

	public List<HojaDeRutaVO> listarHojasDeRuta(int idSuc) {
		try {
			return admSucursales.listarHojasDeRuta(idSuc);

		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}
/*
	public HojaDeRutaVO obtenerHojaDeRuta(int id) {
		try {
			return admSucursales.obtenerHojaDeRuta(id);

		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}
*/
}
